<?php
/*
 * Copyright (c) 2017-2025 Tencent. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace TencentCloud\Trabbit\V20230418\Models;
use TencentCloud\Common\AbstractModel;

/**
 * DescribeRabbitMQServerlessInstance response structure.
 *
 * @method RabbitMQClusterInfo getClusterInfo() Obtain Cluster information.
 * @method void setClusterInfo(RabbitMQClusterInfo $ClusterInfo) Set Cluster information.
 * @method RabbitMQClusterSpecInfo getClusterSpecInfo() Obtain Specifies the cluster specification information.
 * @method void setClusterSpecInfo(RabbitMQClusterSpecInfo $ClusterSpecInfo) Set Specifies the cluster specification information.
 * @method VirtualHostQuota getVirtualHostQuota() Obtain Specifies the quota information of the vhost.
 * @method void setVirtualHostQuota(VirtualHostQuota $VirtualHostQuota) Set Specifies the quota information of the vhost.
 * @method ExchangeQuota getExchangeQuota() Obtain Specifies the exchange quota information.
 * @method void setExchangeQuota(ExchangeQuota $ExchangeQuota) Set Specifies the exchange quota information.
 * @method QueueQuota getQueueQuota() Obtain Specifies the quota information of the queue.
 * @method void setQueueQuota(QueueQuota $QueueQuota) Set Specifies the quota information of the queue.
 * @method RabbitMQServerlessAccessInfo getClusterNetInfo() Obtain Network information.
 * @method void setClusterNetInfo(RabbitMQServerlessAccessInfo $ClusterNetInfo) Set Network information.
 * @method RabbitMQServerlessWhiteListInfo getClusterWhiteListInfo() Obtain Public network allowlist information.
 * @method void setClusterWhiteListInfo(RabbitMQServerlessWhiteListInfo $ClusterWhiteListInfo) Set Public network allowlist information.
 * @method UserQuota getUserQuota() Obtain Specifies the quota information of the user.
 * @method void setUserQuota(UserQuota $UserQuota) Set Specifies the quota information of the user.
 * @method string getRequestId() Obtain The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
 * @method void setRequestId(string $RequestId) Set The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
 */
class DescribeRabbitMQServerlessInstanceResponse extends AbstractModel
{
    /**
     * @var RabbitMQClusterInfo Cluster information.
     */
    public $ClusterInfo;

    /**
     * @var RabbitMQClusterSpecInfo Specifies the cluster specification information.
     */
    public $ClusterSpecInfo;

    /**
     * @var VirtualHostQuota Specifies the quota information of the vhost.
     */
    public $VirtualHostQuota;

    /**
     * @var ExchangeQuota Specifies the exchange quota information.
     */
    public $ExchangeQuota;

    /**
     * @var QueueQuota Specifies the quota information of the queue.
     */
    public $QueueQuota;

    /**
     * @var RabbitMQServerlessAccessInfo Network information.
     */
    public $ClusterNetInfo;

    /**
     * @var RabbitMQServerlessWhiteListInfo Public network allowlist information.
     */
    public $ClusterWhiteListInfo;

    /**
     * @var UserQuota Specifies the quota information of the user.
     */
    public $UserQuota;

    /**
     * @var string The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     */
    public $RequestId;

    /**
     * @param RabbitMQClusterInfo $ClusterInfo Cluster information.
     * @param RabbitMQClusterSpecInfo $ClusterSpecInfo Specifies the cluster specification information.
     * @param VirtualHostQuota $VirtualHostQuota Specifies the quota information of the vhost.
     * @param ExchangeQuota $ExchangeQuota Specifies the exchange quota information.
     * @param QueueQuota $QueueQuota Specifies the quota information of the queue.
     * @param RabbitMQServerlessAccessInfo $ClusterNetInfo Network information.
     * @param RabbitMQServerlessWhiteListInfo $ClusterWhiteListInfo Public network allowlist information.
     * @param UserQuota $UserQuota Specifies the quota information of the user.
     * @param string $RequestId The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     */
    function __construct()
    {

    }

    /**
     * For internal only. DO NOT USE IT.
     */
    public function deserialize($param)
    {
        if ($param === null) {
            return;
        }
        if (array_key_exists("ClusterInfo",$param) and $param["ClusterInfo"] !== null) {
            $this->ClusterInfo = new RabbitMQClusterInfo();
            $this->ClusterInfo->deserialize($param["ClusterInfo"]);
        }

        if (array_key_exists("ClusterSpecInfo",$param) and $param["ClusterSpecInfo"] !== null) {
            $this->ClusterSpecInfo = new RabbitMQClusterSpecInfo();
            $this->ClusterSpecInfo->deserialize($param["ClusterSpecInfo"]);
        }

        if (array_key_exists("VirtualHostQuota",$param) and $param["VirtualHostQuota"] !== null) {
            $this->VirtualHostQuota = new VirtualHostQuota();
            $this->VirtualHostQuota->deserialize($param["VirtualHostQuota"]);
        }

        if (array_key_exists("ExchangeQuota",$param) and $param["ExchangeQuota"] !== null) {
            $this->ExchangeQuota = new ExchangeQuota();
            $this->ExchangeQuota->deserialize($param["ExchangeQuota"]);
        }

        if (array_key_exists("QueueQuota",$param) and $param["QueueQuota"] !== null) {
            $this->QueueQuota = new QueueQuota();
            $this->QueueQuota->deserialize($param["QueueQuota"]);
        }

        if (array_key_exists("ClusterNetInfo",$param) and $param["ClusterNetInfo"] !== null) {
            $this->ClusterNetInfo = new RabbitMQServerlessAccessInfo();
            $this->ClusterNetInfo->deserialize($param["ClusterNetInfo"]);
        }

        if (array_key_exists("ClusterWhiteListInfo",$param) and $param["ClusterWhiteListInfo"] !== null) {
            $this->ClusterWhiteListInfo = new RabbitMQServerlessWhiteListInfo();
            $this->ClusterWhiteListInfo->deserialize($param["ClusterWhiteListInfo"]);
        }

        if (array_key_exists("UserQuota",$param) and $param["UserQuota"] !== null) {
            $this->UserQuota = new UserQuota();
            $this->UserQuota->deserialize($param["UserQuota"]);
        }

        if (array_key_exists("RequestId",$param) and $param["RequestId"] !== null) {
            $this->RequestId = $param["RequestId"];
        }
    }
}
